home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
-
- MODULE
- Request.c
-
- DESCRIPTION
- Command frontend for the different ReqTools Requesters
-
- NOTES
- Needs ReqTools.library >=v38
-
- BUGS
- none known
-
- TODO
- split for filereq
-
- EXAMPLES
-
- SEE ALSO
-
- INDEX
-
- HISTORY
- 11-09-94 b_noll created
- 14-09-94 b_noll command documentation
- 21-09-94 b_noll added DEFCMD/DEFHELP-support
- 24-09-94 b_noll "ReqCheck()" as macro
- 01-10-94 b_noll introduced DEFMESSAGE
-
- ******************************************************************************/
-
-
- /**************************************
- Includes
- **************************************/
-
- #include <exec/types.h>
- #include <exec/memory.h>
- #include <exec/execbase.h>
- #include <libraries/dos.h>
- #include <intuition/intuition.h>
- #include <libraries/reqtools.h>
-
- #include <proto/exec.h>
- #include <proto/dos.h>
- #include <proto/reqtools.h>
-
- /* #include "xdme_base.h" */
- #include "defs.h"
-
- /**************************************
- Global Variables
- **************************************/
-
- Prototype char ReqString[];
-
- /**************************************
- Internal Defines & Structures
- **************************************/
-
-
- /**************************************
- Internal Variables
- **************************************/
-
- char ReqString[MAXLINELEN];
- long ReqResult;
- DEFMESSAGE( _REQ_needing_reqtools, "%s:\n`reqtools.library' is needed for that Command!\n" )
- //const char *ReqE_NoReqLib = _REQ_needing_reqtools;
- #define ReqE_NoReqLib _REQ_needing_reqtools
-
- /**************************************
- Internal Prototypes
- **************************************/
-
-
- /**************************************
- Macros
- **************************************/
-
- #define ReqCheck() \
- if (!ReqToolsBase) { \
- error (ReqE_NoReqLib,av[0]);\
- return RET_FAIL; \
- } /* if */
-
-
- /**************************************
- Implementation
- **************************************/
-
-
- /***************************************************
- XDME COMMAND INTERFACE 11 Sep 1994
- ***************************************************/
-
- /*
- *!
- *! >REQSTRING Title/A,Text/A,Gadgets/A,InitValue/A
- *!
- *! Interface to the ReqTools StringRequester
- *! Opens a synchroneous ReqTools Requester
- *! with the given values
- *!
- *! The Result is written into ReqResult
- *! Cancelling the Requester sets globalflags.Abortcommand;
- *!
- *! gadgets = "|"-separated List of Strings
- *!
- */
- /*DEFHELP #cmd requester REQSTRING title format gadgets defvalue - display a synch ReqTools StringRequest; the result is put in $REQRESULT. */
- DEFUSERCMD("reqstring", 4, CF_COK|CF_VWM|CF_ICO, int, do_reqstring, (void),)
- {
- char *title = av[1];
- char *format = av[2];
- char *gadgets = av[3];
- char *value = av[4];
-
- ReqCheck();
-
- strcpy (ReqString, value);
- ReqResult = rtGetString (ReqString, sizeof(ReqString), title, NULL,
- RTGS_GadFmt, gadgets,
- (format && *format)? RTGS_TextFmt: TAG_IGNORE, format,
-
- TAG_END);
- if (ReqResult == FALSE)
- SET_ABORTION( 1 );
- return RET_SUCC;
- } /* do_reqstring */
-
- /*
- *!
- *! >REQNUMBER Title/A,Text/A,Gadgets/A,InitValue/N/A,Minimum/N/A,Maximum/N/A
- *!
- *! Interface to the ReqTools NumberRequester
- *! Opens a synchroneous ReqTools Requester
- *! with the given values
- *!
- *! The Result is written into ReqResult
- *! Cancelling the Requester sets globalflags.Abortcommand;
- *!
- *! gadgets = "|"-separated List of Strings
- *!
- */
- /*DEFHELP #cmd requester REQNUMBER title format gadgets defvalue min max - display a synch ReqTools NumberRequest; the result is put in $REQRESULT. */
- DEFUSERCMD("reqnumber", 6, CF_COK|CF_VWM|CF_ICO, int, do_reqnumber, (void),)
- {
- char *title = av[1];
- char *format = av[2];
- char *gadgets = av[3];
- char *value = av[4];
- char *minimum = av[5];
- char *maximum = av[6];
-
- ULONG longnum = atol(value);
-
- ReqCheck();
-
- ReqResult = rtGetLong (&longnum, title, NULL,
- RTGL_Min, atol(minimum),
- RTGL_Max, atol(maximum),
- RTGL_GadFmt, gadgets,
- (format && *format)? RTGL_TextFmt: TAG_IGNORE, format,
-
- RT_Window, active_window(), TAG_END);
- if (ReqResult == FALSE)
- SET_ABORTION( 1 );
- else
- strcpy (ReqString, ltostr(longnum));
- return RET_SUCC;
- } /* do_reqnumber */
-
- /*
- *!
- *! >REQPALETTE Title/A,InitValue/N/A
- *!
- *! Interface to the ReqTools PaletteRequester
- *! Opens a synchroneous ReqTools Requester
- *! with the given values
- *!
- *! The Result is written into ReqResult
- *! Cancelling the Requester sets globalflags.Abortcommand;
- *!
- */
- /*DEFHELP #cmd requester REQPALETTE title defvalue - display a synch ReqTools PaletteRequest; the result is put in $REQRESULT. */
- DEFUSERCMD("reqpalette", 2, CF_COK|CF_VWM|CF_ICO, int, do_reqpalette, (void),)
- {
- char *title = av[1];
- char *value = av[2];
-
- ReqCheck();
-
- ReqResult = rtPaletteRequest(title, NULL,
- RTPA_Color, atol(value),
-
- RT_Window, active_window(), TAG_END);
- if (ReqResult == -1)
- SET_ABORTION( 1 );
- else
- strcpy (ReqString, ltostr(ReqResult));
- return RET_SUCC;
- } /* do_reqpalette */
-
-
- /*
- *!
- *! >REQUEST Title/A,Text/A,Gadgets/A
- *!
- *! Interface to the ReqTools EZ Requester
- *! Opens a synchroneous ReqTools Requester
- *! with the given values
- *!
- *! The Result is written into ReqResult
- *!
- *! gadgets = "|"-separated List of Strings
- *!
- */
- /*DEFHELP #cmd requester REQUEST title body gadgets - display a synch ReqTools EZRequest; the result is put in $REQRESULT. */
- DEFUSERCMD("request", 3, CF_COK|CF_VWM|CF_ICO, int, do_request, (void),)
- {
- char *title = av[1];
- char *body = av[2];
- char *gadgets = av[3];
-
- ReqCheck();
-
- ReqResult = rtEZRequestTags(body, gadgets, NULL, NULL,
- RTEZ_ReqTitle, title,
-
- RT_Window, active_window(), TAG_END);
- strcpy (ReqString, ltostr(ReqResult));
- return RET_SUCC;
- } /* do_request */
-
- /*
- *!
- *! >REQFILE Title/A,Flags/A,InitValue/A
- *!
- *! Interface to the ReqTools FileRequester
- *! Opens a synchroneous ReqTools Requester
- *! with the given values
- *!
- *! The Result is written into ReqResult
- *! Cancelling the Requester sets globalflags.Abortcommand;
- *!
- *! flags = [PSD]*;
- *! P=Pattern On; S=Save Mode; D=Director Mode;
- *!
- */
- /*DEFHELP #cmd requester REQFILE title flags defvalue - display a synch ReqTools FileRequest; the result is put in $REQRESULT. */
- DEFUSERCMD("reqfile", 3, CF_COK|CF_VWM|CF_ICO, int, do_reqfile, (void),)
- {
- char *title = av[1];
- char *flags = av[2];
- char *value = av[3];
- unsigned long flg = FREQF_NOBUFFER;
- struct rtFileRequester *filereq;
- char *dir;
-
- ReqCheck();
-
- while (*flags)
- switch (*(flags++)) {
- case 's':
- case 'S':
- flg |= FREQF_SAVE;
- break;
- case 'd':
- case 'D':
- flg |= FREQF_NOFILES;
- break;
- case 'p':
- case 'P':
- flg |= FREQF_PATGAD;
- break;
- default:
- DEFMESSAGE( _REQ_unknown_flag, "%s:\nUnknown Flag `%c'")
- error (_REQ_unknown_flag, av[0], *flags);
- return RET_FAIL;
- }
-
- if (!(dir = malloc(PATHSIZE))) {
- nomemory();
- return RET_FAIL;
- } /* if */
-
- splitpath (value, tmp_buffer, dir);
-
- if ((filereq = rtAllocRequestA (RT_FILEREQ, NULL))) {
-
- rtChangeReqAttr (filereq,
- RTFI_Dir, dir,
- (flg & FREQF_PATGAD)? RTFI_MatchPat: TAG_IGNORE, pattern,
- TAG_DONE);
-
- ReqResult = rtFileRequest (filereq, tmp_buffer, title,
- RTFI_Flags, flg,
- RT_Window, active_window(),
- RTFI_Height, Ep->config.aslheight,
- TAG_END);
-
- if (ReqResult) {
- strcpy (ReqString, filereq->Dir);
- AddPart(ReqString, tmp_buffer, sizeof(ReqString));
- } else
- SET_ABORTION( 1 );
- rtFreeRequest (filereq);
- } else
- nomemory();
-
- free(dir);
-
- return RET_SUCC;
- } /* do_reqfile */
-
- /* ;
- int do_reqchoice (void)
- {
- char *title = av[1];
-
- ReqCheck();
-
- ...
-
- return RET_SUCC;
- } /* do_reqchoice */
-
-
- #if 0
- /*DEFHELP #cmd requester REQFONT title flags defvalue - display a synch ReqTools FontRequest; the result is put in $REQRESULT. */
- DEFUSERCMD("reqfont2", 3, CF_VWM|CF_ICO|CF_COK, void, do_reqfont2, (void),)
- {
- struct rtFontRequester *fontreq;
- char *title = av[1];
- char *flags = av[2];
- char *value = av[3];
- char *style = "";
- unsigned long flg = 0;
- unsigned long stl = FS_NORMAL;
- unsigned long hig = 0;
-
- ReqCheck();
-
- while (*flags)
- switch (*(flags++) | 32) {
- case 'f':
- flg |= FREQF_FIXEDWIDTH;
- break;
- case 'c':
- flg |= FREQF_SCALE;
- break;
- case 's':
- flg |= FREQF_STYLE;
- break;
- default:
- DEFMESSAGE( _REQ_unknown_flag, "%s:\nUnknown Flag `%c'")
- error (_REQ_unknown_flag, av[0], *flags);
- return RET_FAIL;
- }
-
- #if 0
- while (*style)
- switch (*(style++) | 32) {
- case 'b':
- stl |= FSF_BOLD;
- break;
- case 'i':
- stl |= FSF_ITALIC;
- break;
- case 'u':
- case '_':
- stl |= FSF_UNDERLINED;
- break;
- default:
- DEFMESSAGE( _REQ_unknown_style, "%s:\nUnknown style `%c'")
- error (_REQ_unknown_style, av[0], *flags);
- return RET_FAIL;
- }
-
- if (stl && !(flg & FREQF_STYLE)) {
- DEFMESSAGE( _REQ_using_styles_wo_styleflag, "%s:\nUsing Fontstyles w/ the Styleflag unset")
- error (_REQ_using_styles:wo_styleflag, av[0]);
- return RET_FAIL;
- }
- #endif
-
- sscanf (value, "%s %ld", &ReqString[2], &ReqResult);
-
- if ((fontreq = rtAllocRequestA (RT_FONTREQ, NULL))) {
-
- rtChangeReqAttr (fontreq,
- stl? RTFO_FontStyle: TAG_IGNORE, stl,
- RTFO_FontHeight, ReqResult,
- RTFO_FontName, &ReqString[2],
- TAG_DONE);
-
- ReqResult = rtFontRequest (fontreq, title,
- RTFO_MinHeight, 6,
- RTFO_MaxHeight, 24,
- RTFO_Flags, flg,
-
- RT_Window, active_window(),
- RTFO_Height, Ep->config.aslheight,
- TAG_END);
-
- if (ReqResult) {
- FONT *font;
- font = (FONT *)GetFont (fontreq->Attr.ta_Name, (short)fontreq->Attr.ta_YSize );
- if (font)
- CloseFont (font);
- else
- SET_ABORTION( 1 );
-
- sprintf (ReqString, "%s %d",
- fontreq->Attr.ta_Name,
- (int)fontreq->Attr.ta_YSize );
- } else
- SET_ABORTION(Ep,1);
-
- rtFreeRequest (fontreq);
- } else
- nomemory ();
-
- } /* do_reqfont */
- #endif
-
-
-
-
-
-
- #ifdef SPC_VAR
-
- global const str reqresult = %{
- reference = "ReqString";
- help = %[
- Result of the recent call to any of the commands Request, ReqString,
- ReqNumber, ReqPalette or ReqFile, assuming the requester command was
- not aborted nor cancelled.
- %];
- %};
-
- #endif
-
- /******************************************************************************
- ***** END Request.c
- ******************************************************************************/
-